package top.infopub.mgr.mkt.dao;


import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;
import top.infopub.generic.GenericDao;
import top.infopub.mgr.mkt.domain.CollectProjectDomain;
import top.infopub.mgr.mkt.domain.ProjectDomain;
import top.infopub.mgr.mkt.vo.CollectProjectVo;
import top.infopub.model.mkt.CollectProject;

import java.util.List;


/** 项目信息收集(MKT_COLLECT_PROJECT) **/
public interface CollectProjectDao extends GenericDao<CollectProject, String> {

    /**
     * 根据条件查询项目信息记录
     * @param collectProjectVo
     * @return
     * @see
     */
    Page<ProjectDomain> selectByDomainWhere(CollectProjectVo collectProjectVo);

    /**
     * 根据条件查询预立项-我审批的记录
     * @param collectProjectVo
     * @return
     * @see
     */
    Page<CollectProjectDomain> selectMyCheckByDomainWhere(CollectProjectVo collectProjectVo);

    /**
     * 新增项目信息收集
     * @param collectProject
     * @see
     */
    void insertById(CollectProject collectProject);

    /**
     * 根据项目信息收集id查询详情
     * @param id 主键id
     * @return
     * @see
     */
    CollectProjectVo selectById(String id);

    /**
     * 查询可立项的预立项记录
     * @return
     * @see
     */
    //List<CollectProject> selectUsableSetupPreProject();

    /**
     * 查询审批完成的预立项记录
     * @return
     * @see
     */
    //List<CollectProject> selectPreProject(@Param("proCodes") String proCodes);

    /**
     * 根据项目Id查询预立项和城市调研信息
     */
    CollectProjectDomain queryByProCode(@Param("proCodes") String proCodes);

    List<CollectProject> getCollectProjectWithStaff(@Param("proCode") String proCode, @Param("hrStaffMktId") String hrStaffMktId);

    /**
     * 查询未绑定公司的项目记录
     * @return
     * @see
     */
    List<CollectProject> selectNotBindOrg();

    /**
     * 查询项目名称是否重复
     * @param proName 项目名称
     * @return
     * @see
     */
    List<CollectProject> selectByProName(String proName);

    CollectProject selectByProCode(String proCode);

    CollectProject selectByProCodeStatus(String proCode);


    void updateById(CollectProject collectProject2);
}
